#ifndef PHYSIC_MANAGER_H
#define PHYSIC_MANAGER_H

#include <Ogre.h>
#include "NxOgre.h"
#include "Critter.h"
#include <cstdlib>

class Platform;

class PhysicManager
{
    public:
        static const NxOgre::String DEFAULT_SCENE;
        static const float DEFAULT_GRAVITY;
        static const float DEFAULT_STATIC_FRICTION;
        static const float DEFAULT_DYNAMIC_FRICTION;
        static const float DEFAULT_RESTITUTION;
        static const NxOgre::String CUBE_EXAMPLE;
        static const Ogre::String VISUAL_NODE;

        PhysicManager();
        ~PhysicManager(); 

        void createNxScene();

        NxOgre::Scene* getScene() const;
        NxOgre::World* getWorld() const;

		NxOgre::VisualDebugger* getVisualDebugger() const;
		Critter::Renderable* getRenderable() const;
		Critter::RenderSystem* getRenderSystem() const;
		Ogre::SceneNode* getVisualDebuggerNode() const;

        Platform* getPlatform() const;
    private:
        void initVisualDebugger();

        NxOgre::World* world;
        NxOgre::Scene* scene;

		Critter::RenderSystem* renderSystem;

		NxOgre::VisualDebugger* visualDebugger;
		Critter::Renderable* renderable;
		Ogre::SceneNode* visualDebuggerNode;

        Platform* plat;

};

#endif